package com.hu.feignclients;

import com.hu.domain.User;
import com.hu.fallback.UserFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

//该类是作为Feign客户端接口，用来调用user-server
//@FeignClient(value="user-server"):就是标记该接口是Feign的客户端接口 ,value属性就是要调用的目标服务的服务名"spring.application.name"
//Fiegn通过服务名 user-server 就能从注册中心到要调用的目标服务 ，根据方法上的url就能够找到目标服务的具体的Controller如下：
// 想相当于通过服务名、路径、参数帮我们拼出：   http://user-server/user/20
@FeignClient(value = "user-server",fallback = UserFeignClientFallback.class)
public interface UserFeignClient {
    //这个接口里面的方法是拿要调用服务的那个方法，即用来调用的服务的Controller中的方法，建议直接拷贝过来：
    //1.url要一样 ， 2参数要一样 ， 3返回值要一样   ： (value = "/user/{id}")  、   (@PathVariable("id") Long id)  、User
    @GetMapping(value = "/user/{id}")
    User getUserById(@PathVariable("id") Long id);
}
